home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-01-09 | 4.1 KB | 146 lines | [TEXT/PARZ] |
- START
- 10 PE
- 2 PORTS
- SCALAR I1 I10 I4 B2
- VECTOR I1 I3 B1 B2 I1
- 1 : GOTO 15;
- 2 : PROC 1 VECTOR I1;
- POPV VI1:1;
- VI[VI1:1] := 0;
- PUSHV VI1:1;
- RETURN;
- 3 : PROC 1;
- ERROR "value out of range";
- RETURN;
- 4 : PROC 1
- SCALAR
- VECTOR I2 I1; group number 1
- PUSHV ADDR VI1:2;
- 5 : VI1:1 := ID - 1; for LIST calculating DIMi
- VI1:1 := VI1:1 + 1; DIM1
- 6 : VI1:3 := VI1:1 - 1;
- 7 : VI1:3 := VI1:3 - 1;
- 8 : VI1:2 := VI1:3;
- VI1:2 := VI1:2 + 1;
- IF VI1:3 < 0 CALL 2;
- IF VI1:3 > 9 CALL 2;
- CONNECT 1 TO 2 AT VI1:2;
- 9 : VI1:3 := VI1:1 + 1;
- 10 : VI1:3 := VI1:3 - 1;
- 11 : VI1:2 := VI1:3;
- VI1:2 := VI1:2 + 1;
- IF VI1:3 < 0 CALL 2;
- IF VI1:3 > 9 CALL 2;
- CONNECT 2 TO 1 AT VI1:2;
- 12 : POPV VI1:2;
- 13 : RETURN; group number : 1
- 14 : PROC 1; configuration : LIST
- VI0:1 := ID - 1; for LIST calculating DIMi
- VI0:1 := VI0:1 + 1; DIM1
- RETURN; configuration : LIST
- 15 : CALL 4; connections
- 16!15 : WRITE "Enter 10 values: "; line 15 column 2
- 17!16 : SI0:1 := 1; line 16 column 2
- 18 : SI0:13 := 10;
- 19!16 : IF SI0:1 > SI0:13 GOTO 28; line 16 column 2
- 20!16 : IF SI0:1 < 1 CALL 3; line 16 column 19
- 21 : IF 10 < SI0:1 CALL 3;
- 22 : SI0:12 := ADDR SI0:2 - SIZE( I1 );
- 23 : SI0:14 := SI0:1 * SIZE( I1 );
- 24 : SI0:12 := SI0:12 + SI0:14;
- 25 : READ SI[SI0:12];
- 26 : SI0:1 := SI0:1 + 1;
- 27 : GOTO 19;
- 28!17 : CALL 14; line 17 column 2
- 29 : LOAD VI0:2 WITH SI0:2;
- 30!19 : SI0:1 := 1; line 19 column 2
- 31 : SI0:13 := 10;
- 32!19 : IF SI0:1 > SI0:13 GOTO 104; line 19 column 2
- 33!20 : CALL 14; line 20 column 4
- 34!21 : VI0:4 := VI0:2; line 21 column 6
- 35 : PROPAGATE VI0:4 OUT 2 IN 1;
- 36!22 : VI0:3 := VI0:2; line 22 column 6
- 37 : PROPAGATE VI0:3 OUT 1 IN 2;
- 38!23 : VB0:1 := FALSE; line 23 column 6
- 39!25 : SI0:14 := SI0:1 MOD 2; line 25 column 6
- 40 : SB0:1 := SI0:14;
- 41 : IF SB0:1 = FALSE GOTO 63;
- 42!26 : VB0:3 := TRUE; line 26 column 8
- 43 : VI0:5 := VI0:1 MOD 2;
- 44 : VB0:2 := VI0:5;
- 45 : IF VB0:2 = FALSE CALL 48;
- 46 : IF VB0:3 CALL 51;
- 47 : GOTO 55;
- 48 : PROC 1;
- 49 : VB0:3 := FALSE;
- 50 : RETURN;
- 51 : PROC 1;
- 52 : VB0:2 := VI0:3 < VI0:2;
- 53 : VB0:3 := VB0:2;
- 54 : RETURN;
- 55 : VB0:2 := VB0:3;
- 56 : IF VB0:2 CALL 58;
- 57 : GOTO 62;
- 58 : PROC 1;
- 59!27 : VI0:2 := VI0:3; line 27 column 10
- 60!28 : VB0:1 := TRUE; line 28 column 10
- 61 : RETURN;
- 62 : GOTO 84;
- 63!31 : VB0:2 := TRUE; line 31 column 8
- 64 : VI0:5 := VI0:1 MOD 2;
- 65 : VB0:3 := VI0:5;
- 66 : VB0:3 := NOT VB0:3;
- 67 : IF VB0:3 = FALSE CALL 70;
- 68 : IF VB0:2 CALL 73;
- 69 : GOTO 77;
- 70 : PROC 1;
- 71 : VB0:2 := FALSE;
- 72 : RETURN;
- 73 : PROC 1;
- 74 : VB0:3 := VI0:3 < VI0:2;
- 75 : VB0:2 := VB0:3;
- 76 : RETURN;
- 77 : VB0:3 := VB0:2;
- 78 : IF VB0:3 CALL 80;
- 79 : GOTO 84;
- 80 : PROC 1;
- 81!32 : VI0:2 := VI0:3; line 32 column 10
- 82!33 : VB0:1 := TRUE; line 33 column 10
- 83 : RETURN;
- 84!37 : PROPAGATE VB0:1 OUT 2 IN 1; line 37 column 6
- 85!38 : VB0:3 := TRUE; line 38 column 6
- 86 : IF VB0:1 = FALSE CALL 89;
- 87 : IF VB0:3 CALL 92;
- 88 : GOTO 96;
- 89 : PROC 1;
- 90 : VB0:3 := FALSE;
- 91 : RETURN;
- 92 : PROC 1;
- 93 : VB0:2 := ID > 1;
- 94 : VB0:3 := VB0:2;
- 95 : RETURN;
- 96 : VB0:2 := VB0:3;
- 97 : IF VB0:2 CALL 99;
- 98 : GOTO 102;
- 99 : PROC 1;
- 100!38 : VI0:2 := VI0:4; line 38 column 35
- 101 : RETURN;
- 102 : SI0:1 := SI0:1 + 1;
- 103 : GOTO 32;
- 104!42 : CALL 14; line 42 column 2
- 105 : STORE VI0:2 TO SI0:2;
- 106!43 : SI0:1 := 1; line 43 column 2
- 107 : SI0:13 := 10;
- 108!43 : IF SI0:1 > SI0:13 GOTO 118; line 43 column 2
- 109!43 : IF SI0:1 < 1 CALL 3; line 43 column 19
- 110 : IF 10 < SI0:1 CALL 3;
- 111 : SI0:14 := ADDR SI0:2 - SIZE( I1 );
- 112 : SI0:15 := SI0:1 * SIZE( I1 );
- 113 : SI0:14 := SI0:14 + SI0:15;
- 114 : WRITE SI[SI0:14] 10;
- 115!43 : WRITE EOL; line 43 column 38
- 116 : SI0:1 := SI0:1 + 1;
- 117 : GOTO 108;
- 118 : END; SORT
- STOP
-